--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/frontend/networkVisualiserPerf.test.js bce42bcdce0e7d2c6d78228e864a4cd1d974cc82 (bce42bcd) Text, 4.54 KB
Tff7b72import Tb4b4b4{ Te6edf3describeTb4b4b4, Te6edf3itTb4b4b4, Te6edf3expectTb4b4b4, Te6edf3viTb4b4b4, Te6edf3beforeEachTb4b4b4, Te6edf3afterEach Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Tb4b4b4{
Te6edf3ANNOUNCE_HASH_CHUNK_SIZETb4b4b4,
Te6edf3VIZ_ANNOUNCE_ASPECTSTb4b4b4,
Te6edf3buildPathGraphTb4b4b4,
Te6edf3buildPathGraphJsTb4b4b4,
Te6edf3computeLodUpdatesJsTb4b4b4,
Te6edf3dedupeIconQueueEntriesTb4b4b4,
Te6edf3dedupeIconQueueEntriesJsTb4b4b4,
Te6edf3lodLevelFromScaleTb4b4b4,
Te6edf3pathHashesWithinHopFilterTb4b4b4,
Te6edf3pathHashesWithinHopFilterJsTb4b4b4,
Te6edf3pickAdaptiveFetchConcurrencyTb4b4b4,
Tb4b4b4} Tff7b72from Ta5d6ff"@/js/networkVisualiserPerf.js"Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"networkVisualiserPerf"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3beforeEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72delete Tffa657globalThisTb4b4b4.Te6edf3meshchatxVisualiserPathHashesTb4b4b4;
Tff7b72delete Tffa657globalThisTb4b4b4.Te6edf3meshchatxVisualiserDedupeIconsTb4b4b4;
Tff7b72delete Tffa657globalThisTb4b4b4.Te6edf3meshchatxVisualiserBuildPathGraphTb4b4b4;
Tff7b72delete Tffa657globalThisTb4b4b4.Te6edf3meshchatxVisualiserLODLevelTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3afterEachTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3viTb4b4b4.Te6edf3restoreAllMocksTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"exports visualiser constants"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3VIZ_ANNOUNCE_ASPECTSTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4[Ta5d6ff"lxmf.delivery"Tb4b4b4, Ta5d6ff"nomadnetwork.node"Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3ANNOUNCE_HASH_CHUNK_SIZETb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff500Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"pathHashesWithinHopFilter respects hop max"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3pathTable Tff7b72= Tb4b4b4[
Tb4b4b4{ Te6edf3hashTff7b72: Ta5d6ff"aa"Tb4b4b4, Te6edf3hopsTff7b72: T79c0ff1 Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3hashTff7b72: Ta5d6ff"bb"Tb4b4b4, Te6edf3hopsTff7b72: T79c0ff4 Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3hashTff7b72: Ta5d6ff"cc"Tb4b4b4, Te6edf3hopsTff7b72: T79c0ff5 Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3hashTff7b72: Ta5d6ff"dd"Tb4b4b4, Te6edf3hopsTff7b72: Tff7b72null Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3pathHashesWithinHopFilterJsTb4b4b4(Te6edf3pathTableTb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4.Te6edf3sortTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4[Ta5d6ff"aa"Tb4b4b4, Ta5d6ff"bb"Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3pathHashesWithinHopFilterTb4b4b4(Te6edf3pathTableTb4b4b4, Tff7b72nullTb4b4b4)Tb4b4b4.Te6edf3sortTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4[Ta5d6ff"aa"Tb4b4b4, Ta5d6ff"bb"Tb4b4b4, Ta5d6ff"cc"Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"dedupeIconQueueEntries collapses duplicate cache keys"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3queue Tff7b72= Tb4b4b4[
Tb4b4b4{ Te6edf3nodeIdTff7b72: Ta5d6ff"n1"Tb4b4b4, Te6edf3cacheKeyTff7b72: Ta5d6ff"k1"Tb4b4b4, Te6edf3iconNameTff7b72: Ta5d6ff"a"Tb4b4b4, Te6edf3fgTff7b72: Ta5d6ff"#000"Tb4b4b4, Te6edf3bgTff7b72: Ta5d6ff"#fff"Tb4b4b4, Te6edf3sizeTff7b72: T79c0ff64Tb4b4b4, Te6edf3generationTff7b72: T79c0ff1 Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3nodeIdTff7b72: Ta5d6ff"n2"Tb4b4b4, Te6edf3cacheKeyTff7b72: Ta5d6ff"k1"Tb4b4b4, Te6edf3iconNameTff7b72: Ta5d6ff"a"Tb4b4b4, Te6edf3fgTff7b72: Ta5d6ff"#000"Tb4b4b4, Te6edf3bgTff7b72: Ta5d6ff"#fff"Tb4b4b4, Te6edf3sizeTff7b72: T79c0ff64Tb4b4b4, Te6edf3generationTff7b72: T79c0ff1 Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3nodeIdTff7b72: Ta5d6ff"n3"Tb4b4b4, Te6edf3cacheKeyTff7b72: Ta5d6ff"k2"Tb4b4b4, Te6edf3iconNameTff7b72: Ta5d6ff"b"Tb4b4b4, Te6edf3fgTff7b72: Ta5d6ff"#111"Tb4b4b4, Te6edf3bgTff7b72: Ta5d6ff"#eee"Tb4b4b4, Te6edf3sizeTff7b72: T79c0ff64Tb4b4b4, Te6edf3generationTff7b72: T79c0ff1 Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3out Tff7b72= Te6edf3dedupeIconQueueEntriesJsTb4b4b4(Te6edf3queueTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3outTb4b4b4)Tb4b4b4.Te6edf3toHaveLengthTb4b4b4(T79c0ff2Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3outTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3xTb4b4b4) Tb4b4b4=> Te6edf3xTb4b4b4.Te6edf3cacheKey Tff7b72=== Ta5d6ff"k1"Tb4b4b4)Tff7b72?Tb4b4b4.Te6edf3nodeIdsTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4[Ta5d6ff"n1"Tb4b4b4, Ta5d6ff"n2"Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3dedupeIconQueueEntriesTb4b4b4(Te6edf3queueTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toHaveLengthTb4b4b4(T79c0ff2Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"pickAdaptiveFetchConcurrency returns a positive integer"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3pickAdaptiveFetchConcurrencyTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanOrEqualTb4b4b4(T79c0ff2Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"buildPathGraphJs filters hops and builds nodes/edges"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3res Tff7b72= Te6edf3buildPathGraphJsTb4b4b4(Tb4b4b4{
Te6edf3path_tableTff7b72: Tb4b4b4[
Tb4b4b4{ Te6edf3hashTff7b72: Ta5d6ff"aa"Tb4b4b4, Tff7b72interfaceTff7b72: Ta5d6ff"eth0"Tb4b4b4, Te6edf3hopsTff7b72: T79c0ff1 Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3hashTff7b72: Ta5d6ff"bb"Tb4b4b4, Tff7b72interfaceTff7b72: Ta5d6ff"eth0"Tb4b4b4, Te6edf3hopsTff7b72: T79c0ff9 Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Te6edf3announcesTff7b72: Tb4b4b4{
Te6edf3aaTff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Ta5d6ff"aa"Tb4b4b4,
Te6edf3aspectTff7b72: Ta5d6ff"lxmf.delivery"Tb4b4b4,
Te6edf3display_nameTff7b72: Ta5d6ff"Alice"Tb4b4b4,
Te6edf3last_seenTff7b72: Ta5d6ff"now"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3bbTff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Ta5d6ff"bb"Tb4b4b4,
Te6edf3aspectTff7b72: Ta5d6ff"lxmf.delivery"Tb4b4b4,
Te6edf3display_nameTff7b72: Ta5d6ff"Far"Tb4b4b4,
Te6edf3last_seenTff7b72: Ta5d6ff"now"Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3positionsTff7b72: Tb4b4b4{ Te6edf3eth0Tff7b72: Tb4b4b4{ Te6edf3xTff7b72: T79c0ff10Tb4b4b4, Te6edf3yTff7b72: T79c0ff20 Tb4b4b4} Tb4b4b4}Tb4b4b4,
Te6edf3hop_maxTff7b72: T79c0ff4Tb4b4b4,
Te6edf3dark_modeTff7b72: Tff7b72falseTb4b4b4,
Te6edf3lodTff7b72: Ta5d6ff"high"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resTb4b4b4.Te6edf3nodesTb4b4b4)Tb4b4b4.Te6edf3toHaveLengthTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resTb4b4b4.Te6edf3edgesTb4b4b4)Tb4b4b4.Te6edf3toHaveLengthTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resTb4b4b4.Te6edf3nodesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"aa"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3resTb4b4b4.Te6edf3edgesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3widthTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(T79c0ff2.5Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3buildPathGraphTb4b4b4(Tb4b4b4{ Te6edf3path_tableTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3announcesTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4.Te6edf3nodesTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"computeLodUpdatesJs and lodLevelFromScale work without WASM"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3lodLevelFromScaleTb4b4b4(T79c0ff0.1Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"low"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3lodLevelFromScaleTb4b4b4(T79c0ff0.3Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"medium"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3lodLevelFromScaleTb4b4b4(T79c0ff0.8Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"high"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3updates Tff7b72= Te6edf3computeLodUpdatesJsTb4b4b4(
Tb4b4b4[Tb4b4b4{ Te6edf3idTff7b72: Ta5d6ff"n1"Tb4b4b4, Te6edf3shapeTff7b72: Ta5d6ff"circularImage"Tb4b4b4, Te6edf3sizeTff7b72: T79c0ff25Tb4b4b4, Te6edf3_originalShapeTff7b72: Ta5d6ff"circularImage"Tb4b4b4, Te6edf3_originalSizeTff7b72: T79c0ff25 Tb4b4b4}Tb4b4b4]Tb4b4b4,
Ta5d6ff"low"Tb4b4b4,
Tff7b72false
Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3updatesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3shapeTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"dot"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"falls back to JS when WASM export throws"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657globalThisTb4b4b4.Te6edf3meshchatxVisualiserPathHashes Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"boom"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tffa657globalThisTb4b4b4.Te6edf3meshchatxVisualiserBuildPathGraph Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"boom"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tffa657globalThisTb4b4b4.Te6edf3meshchatxVisualiserDedupeIcons Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"boom"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3pathHashesWithinHopFilterTb4b4b4(Tb4b4b4[Tb4b4b4{ Te6edf3hashTff7b72: Ta5d6ff"aa"Tb4b4b4, Te6edf3hopsTff7b72: T79c0ff1 Tb4b4b4}Tb4b4b4]Tb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4[Ta5d6ff"aa"Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3dedupeIconQueueEntriesTb4b4b4(Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3buildPathGraphTb4b4b4(Tb4b4b4{ Te6edf3path_tableTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4, Te6edf3announcesTff7b72: Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4.Te6edf3nodesTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────